package edu.cibertec.sicsolutions.vfs.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import edu.cibertec.sicsolutions.constants.Constants;
import edu.cibertec.sicsolutions.constants.SessionConstants;
import edu.cibertec.sicsolutions.util.StringUtil;
import edu.cibertec.sicsolutions.vfs.domain.votacion.Candidato;
import edu.cibertec.sicsolutions.vfs.domain.votacion.Consolidado;
import edu.cibertec.sicsolutions.vfs.domain.votacion.Resultado;
import edu.cibertec.sicsolutions.vfs.service.ConsolidadoService;
import edu.cibertec.sicsolutions.vfs.service.ResultadoService;

public class ConsolidacionAction extends DispatchAction {

	Consolidado[] consolidados = null;
	Integer flagConsolidado = 0;

	public ActionForward init(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception { 
		request.getSession().setAttribute("flagResultado",null);
		request.getSession().setAttribute("msjConsolidado",null); 
		return mapping.findForward(Constants.SUCCESS_INIT);
	}

	public ActionForward consolidarVotacion(ActionMapping mapping,
			ActionForm form, HttpServletRequest request,
			HttpServletResponse response) throws Exception {

		HttpSession session = request.getSession();
		if (flagConsolidado == 0) {
			if (StringUtil.isNullOrEmpty(request.getParameter("d-7362579-p"))) {
				consolidados = ConsolidadoService.resultConsolidadoForResultado();
			} 
			session.setAttribute(SessionConstants.LIST_CONSOLIDADA,consolidados);
			
			Consolidado[] consolidados = ConsolidadoService.resultResultadoVotacion();
			
			int countVotos = 0;
			for(Consolidado consolidado2: consolidados  ){
				countVotos += consolidado2.getCantidadVotosTotal();
			}
			
			int i=0; 
			for(Consolidado consolidado: consolidados  ){
				i++;
				Resultado resultado = new Resultado();
				resultado.setCodigoElecciones(1);
				resultado.setCantidadVotos(consolidado.getCantidadVotosTotal());
				resultado.setCodigoCandidato(consolidado.getCodigoCandidato());
				Candidato candidato = consolidado.getCandidato();
				resultado.setNombreCandidato(candidato.getNombre() + " "+candidato.getApellidoPaterno());
				resultado.setNombrePartido(candidato.getPartidoPolitico().getNombre());
				 double porcentaje =   (resultado.getCantidadVotos()*100)/countVotos ; 
				resultado.setPorcentajeVotos(porcentaje);
				resultado.setPuestoVotacion( i+"" );
				ResultadoService.insertResultado(resultado);
			}
			
			
			session.setAttribute("flagResultado",1);
			flagConsolidado = 1;
			
		} else {
			session.setAttribute("msjConsolidado","La consolidacion ya fue realizada.Solo se puede hacer 1 vez"); 
		}
		return mapping.findForward(Constants.SUCCESS_INIT);
	}

}
